home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / temacd / wikipad / WikidPad-1.9beta2.exe / {app} / extensions / ExampleInsertion.py < prev    next >
Text File  |  2006-11-23  |  3KB  |  95 lines

  1. import os, urllib
  2.  
  3. import wx
  4.  
  5. WIKIDPAD_PLUGIN = (("InsertionByKey", 1),)
  6.  
  7. def describeInsertionKeys(ver, app):
  8.     """
  9.     API function for "InsertionByKey" plugins
  10.     Returns a sequence of tuples describing the supported
  11.     insertion keys. Each tuple has the form (insKey, exportTypes, handlerFactory)
  12.     where insKey is the insertion key handled, exportTypes is a sequence of
  13.     strings describing the supported export types and handlerFactory is
  14.     a factory function (normally a class) taking the wxApp object as
  15.     parameter and returning a handler object fulfilling the protocol
  16.     for "insertion by key" (see EqnHandler as example).
  17.     
  18.     This plugin uses the special export type "wikidpad_language" which is
  19.     not a real type like HTML export, but allows to return a string
  20.     which conforms to WikidPad wiki syntax and is postprocessed before
  21.     exporting.
  22.     Therefore this plugin is not bound to a specific export type.
  23.  
  24.     ver -- API version (can only be 1 currently)
  25.     app -- wxApp object
  26.     """
  27.     return ((u"testexample", ("wikidpad_language",), ExampleHandler),)
  28.  
  29.  
  30. class ExampleHandler:
  31.     """
  32.     Class fulfilling the "insertion by key" protocol.
  33.     """
  34.     def __init__(self, app):
  35.         self.app = app
  36.         
  37.     def taskStart(self, exporter, exportType):
  38.         """
  39.         This is called before any call to createContent() during an
  40.         export task.
  41.         An export task can be a single HTML page for
  42.         preview or a single page or a set of pages for export.
  43.         exporter -- Exporter object calling the handler
  44.         exportType -- string describing the export type
  45.         
  46.         Calls to createContent() will only happen after a 
  47.         call to taskStart() and before the call to taskEnd()
  48.         """
  49.         pass
  50.  
  51.         
  52.     def taskEnd(self):
  53.         """
  54.         Called after export task ended and after the last call to
  55.         createContent().
  56.         """
  57.         pass
  58.  
  59.  
  60.     def createContent(self, exporter, exportType, insToken):
  61.         """
  62.         Handle an insertion and create the appropriate content.
  63.  
  64.         exporter -- Exporter object calling the handler
  65.         exportType -- string describing the export type
  66.         insToken -- insertion token to create content for (see also 
  67.                 PageAst.Insertion)
  68.  
  69.         An insertion token has the following member variables:
  70.             key: insertion key (unistring)
  71.             value: value of an insertion (unistring)
  72.             appendices: sequence of strings with the appendices
  73.  
  74.         Meaning and type of return value is solely defined by the type
  75.         of the calling exporter.
  76.         
  77.         For HtmlXmlExporter a unistring is returned with the HTML code
  78.         to insert instead of the insertion.        
  79.         """
  80.         result = u"Value: " + insToken.value
  81.         for i, apx in enumerate(insToken.appendices):
  82.             result += " %i. appendix: %s" % (i, apx)
  83.  
  84.         return result
  85.  
  86.  
  87.     def getExtraFeatures(self):
  88.         """
  89.         Returns a list of bytestrings describing additional features supported
  90.         by the plugin. Currently not specified further.
  91.         """
  92.         return ()
  93.  
  94.  
  95.